package ar.edu.unrn.lia.service.impl;

import java.util.List;
import java.util.Map;

import javax.inject.Inject;
import javax.inject.Named;

import org.springframework.transaction.annotation.Transactional;

import ar.edu.unrn.lia.dao.PropiedadDAO;
import ar.edu.unrn.lia.model.Propiedad;
import ar.edu.unrn.lia.service.PropiedadService;


//@Service(value = "propiedadService")
@Named("propiedadService")
public class PropiedadServiceImpl implements PropiedadService {

	@Inject
	PropiedadDAO entityDAO;

	public PropiedadDAO getEntityDAO() {
		return entityDAO;
	}

	@Transactional(readOnly = true)
	public Long getCount(Map<String, String> filters) {
		return getEntityDAO().count(
				getEntityDAO().getSearchPredicates(getEntityDAO().rootCount(),
						filters));
	}

	@Transactional(readOnly = true)
	public List<Propiedad> getList(Integer page, Integer pagesize,
			Map<String, String> filters, String sortField, Boolean asc) {
		return getEntityDAO().listwithPag(
				getEntityDAO().getSearchPredicates(getEntityDAO().rootCount(),
						filters), page, pagesize, sortField, asc);
	}

	@Transactional
	public void save(Propiedad entity) throws Exception {
		if (entity.getBarrio() == null)
			throw new Exception("Debe seleccionar barrio.");		
		getEntityDAO().create(entity);
	}

	@Transactional
	public void delete(Propiedad entity) {		
		getEntityDAO().delete(entity);
	}

	@Transactional
	public void update(Propiedad entity) {
		getEntityDAO().update(entity);
	}

	public Propiedad getEntityById(Long id) {
		return getEntityDAO().read(id);
	}

	public List<Propiedad> getAll() {
		return getEntityDAO().findAll();
	}

}